package com.jinke.api.modules.third.huaLei.model.dto;

import com.alibaba.fastjson2.annotation.JSONField;
import lombok.Data;
import lombok.experimental.Accessors;

import java.util.List;

/**
 * @projectName:
 * @title: HuaLeiCreateOrderDTO
 * @description: 华磊创建订单请求体
 * @see:
 * @author: hhp
 * @version: 1.0.0
 * @createTime: 2024/8/29 13:11
 */
@Data
@Accessors(chain = true)
public class HuaLeiCreateOrderDTO {
    /**
     *
     */
    @JSONField(name = "buyerid")
    private String buyerId;
    /**
     * 件数，小包默认1，快递需真实填写
     */
    @JSONField(name = "order_piece")
    private String orderPiece;
    /**
     * 手机号,选填。为方便派送最好填写
     */
    @JSONField(name = "consignee_mobile")
    private String consigneeMobile;
    /**
     * 退回标志，默认N表示不退回，Y标表示退回。中邮可以忽略该属性
     */
    @JSONField(name = "order_returnsign")
    private String orderReturnSign;
    /**
     * "ZYXT"
     */
    @JSONField(name = "trade_type")
    private String tradeType;
    /**
     * "DDU或DDP"
     */
    @JSONField(name = "duty_type")
    private String dutyType;
    /**
     * 电池类型代码，联系货代提供
     */
    @JSONField(name = "battery_type")
    private String batteryType;
    /**
     * 收件人,必填
     */
    @JSONField(name = "consignee_name")
    private String consigneeName;
    /**
     * 收件公司名,如有最好填写
     */
    @JSONField(name = "consignee_companyname")
    private String consigneeCompanyName;
    /**
     * 收件地址街道，必填
     */
    @JSONField(name = "consignee_address")
    private String consigneeAddress;
    /**
     * 收件电话，必填
     */
    @JSONField(name = "consignee_telephone")
    private String consigneeTelephone;
    /**
     * 收件国家二字代码，必填
     */
    private String country;
    /**
     * 州/省
     */
    @JSONField(name = "consignee_state")
    private String consigneeState;
    /**
     * 城市
     */
    @JSONField(name = "consignee_city")
    private String consigneeCity;
    /**
     * 收件区，选填
     */
    @JSONField(name = "consignee_suburb")
    private String consigneeSuburb;
    /**
     * 邮编，有邮编的国家必填
     */
    @JSONField(name = "consignee_postcode")
    private String consigneePostcode;
    /**
     * 收件护照号，选填
     */
    @JSONField(name = "consignee_passportno")
    private String consigneePassportNo;
    /**
     * 邮箱，选填
     */
    @JSONField(name = "consignee_email")
    private String consigneeEmail;
    /**
     * 收件人税号
     */
    @JSONField(name = "consignee_taxno")
    private String consigneeTaxNo;
    /**
     * 收件人税号类型
     */
    @JSONField(name = "consignee_taxnotype")
    private String consigneeTaxNoType;
    /**
     * 收件人税号国家
     */
    @JSONField(name = "consignee_taxnocountry")
    private String consigneeTaxNoCountry;
    /**
     * 街道号
     */
    @JSONField(name = "consignee_streetno")
    private String consigneeStreetNo;
    /**
     * 门牌号
     */
    @JSONField(name = "consignee_doorno")
    private String consigneeDoorNo;
    /**
     * 税号类型，邮政产品可选值：IOSS,NO-IOSS,OTHER；
     * DHL可选值：SDT、VAT、FTZ、DAN、EOR、CNP、EIN等(类型说明参照文档底部“DHL发件人税号类型”)
     */
    @JSONField(name = "shipper_taxnotype")
    private String shipperTaxNoType;
    /**
     * 发件人税号
     */
    @JSONField(name = "shipper_taxno")
    private String shipperTaxNo;
    /**
     * 发件人税号国家,用国家二字码
     */
    @JSONField(name = "shipper_taxnocountry")
    private String shipperTaxNoCountry;
    /**
     * 客户ID，必填
     */
    @JSONField(name = "customer_id")
    private String customerId;
    /**
     * 登录人ID，必填
     */
    @JSONField(name = "customer_userid")
    private String customerUserId;
    /**
     * 原单号，必填
     */
    @JSONField(name = "order_customerinvoicecode")
    private String orderCustomerInvoiceCode;
    /**
     * 运输方式ID，必填
     */
    @JSONField(name = "product_id")
    private String productId;
    /**
     * 总重，选填，如果sku上有单重可不填该项
     */
    private String weight;
    /**
     * 图片地址，多图片地址用分号隔开
     */
    @JSONField(name = "product_imagepath")
    private String productImagePath;
    /**
     * 产品销售地址
     */
    @JSONField(name = "order_transactionurl")
    private String orderTransactionUrl;
    /**
     * 选填；用于DHL/FEDEX运费；或用于白关申报（订单实际金额，特殊渠道使用）；或其他用途
     */
    @JSONField(name = "order_cargoamount")
    private String orderCargoAmount;
    /**
     * 保险金额
     */
    @JSONField(name = "order_insurance")
    private String orderInsurance;
    /**
     * 包裹类型，P代表包裹，D代表文件，B代表PAK袋
     */
    @JSONField(name = "cargo_type")
    private String cargoType;
    /**
     * 自定义信息
     */
    @JSONField(name = "order_customnote")
    private String orderCustomNote;
    private List<OrderInvoiceParam> orderInvoiceParam;
    /**
     * 选填
     */
    private List<OrderVolumeParam> orderVolumeParam;
    @Data
    public static class OrderInvoiceParam {
        /**
        * 申报总价值，必填
        */
        @JSONField(name = "invoice_amount")
        private String invoiceAmount;
        /**
        * 件数，必填
        */
        @JSONField(name = "invoice_pcs")
        private String invoicePcs;
        /**
        * 英文品名，必填
        */
        @JSONField(name = "invoice_title")
        private String invoiceTitle;
        /**
        * 单件重
        */
        @JSONField(name = "invoice_weight")
        private String invoiceWeight;
        /**
        * 中文品名
        */
        private String sku;
        /**
        * 配货信息
        */
        @JSONField(name = "sku_code")
        private String skuCode;
        /**
        * 海关编码
        */
        @JSONField(name = "hs_code")
        private String hsCode;
        /**
        * 进口海关编码
        */
        @JSONField(name = "import_hs_code")
        private String importHsCode;
        /**
        * 销售地址
        */
        @JSONField(name = "transaction_url")
        private String transactionUrl;
        /**
        * 申报单位
        */
        @JSONField(name = "invoiceunit_code")
        private String invoiceUnitCode;
        /**
        * 图片地址
        */
        @JSONField(name = "invoice_imgurl")
        private String invoiceImgUrl;
        /**
        * 品牌
        */
        @JSONField(name = "invoice_brand")
        private String invoiceBrand;
        /**
        * 规格
        */
        @JSONField(name = "invoice_rule")
        private String invoiceRule;
        /**
        * 申报币种
        */
        @JSONField(name = "invoice_currency")
        private String invoiceCurrency;
        /**
        * 税则号
        */
        @JSONField(name = "invoice_taxno")
        private String invoiceTaxNo;
        /**
        * 原产国
        */
        @JSONField(name = "origin_country")
        private String originCountry;
        /**
        * 材质
        */
        @JSONField(name = "invoice_material")
        private String invoiceMaterial;
        /**
        * 用途
        */
        @JSONField(name = "invoice_purpose")
        private String invoicePurpose;
    }
    @Data
    public static class OrderVolumeParam {
        /**
        * 高，单位CM
        */
        @JSONField(name = "volume_height")
        private String volumeHeight;
        /**
        * 长，单位CM
        */
        @JSONField(name = "volume_length")
        private String volumeLength;
        /**
        * 宽，单位CM
        */
        @JSONField(name = "volume_width")
        private String volumeWidth;
        /**
        * 实重
        */
        @JSONField(name = "volume_weight")
        private String volumeWeight;
    }
}
